@echo off
chcp 65001 > nul
setlocal enabledelayedexpansion

:: 从docker-compose.yml获取当前版本号
for /f "tokens=3 delims=:" %%a in ('type docker-compose.yml ^| findstr /i /c:"image: zhongmingyv/hotel-server:"') do (
    set CURRENT_VERSION=%%a
    set CURRENT_VERSION=!CURRENT_VERSION: =!
)

if "!CURRENT_VERSION!"=="" (
    echo 错误：无法从docker-compose.yml获取当前版本号
    exit /b 1
)

echo 当前版本号: !CURRENT_VERSION!

:: 检查参数数量
if "%~1"=="" (
    echo 错误：请提供新版本号作为参数
    echo 用法：update.bat 新版本号
    exit /b 1
)

if not "%~2"=="" (
    echo 错误：参数数量过多
    echo 用法：update.bat 新版本号
    exit /b 1
)

set NEW_VERSION=%~1
echo 新版本号: !NEW_VERSION!

:: 执行docker-compose down
echo 正在停止当前服务...
docker-compose down

:: 更新docker-compose.yml中的版本号
echo 正在更新版本号...

:: 创建临时文件
type nul > docker-compose.yml.tmp

:: 逐行读取文件并进行替换
for /f "usebackq delims=" %%a in (docker-compose.yml) do (
    set "line=%%a"
    if "!line:zhongmingyv/hotel-server:%CURRENT_VERSION%=!" neq "!line!" (
        set "newline=!line:zhongmingyv/hotel-server:%CURRENT_VERSION%=zhongmingyv/hotel-server:%NEW_VERSION%!"
        echo !newline!>> docker-compose.yml.tmp
    ) else if "!line:zhongmingyv/hotel-lockcom:%CURRENT_VERSION%=!" neq "!line!" (
        set "newline=!line:zhongmingyv/hotel-lockcom:%CURRENT_VERSION%=zhongmingyv/hotel-lockcom:%NEW_VERSION%!"
        echo !newline!>> docker-compose.yml.tmp
    ) else if "!line:zhongmingyv/hotel-vue:%CURRENT_VERSION%=!" neq "!line!" (
        set "newline=!line:zhongmingyv/hotel-vue:%CURRENT_VERSION%=zhongmingyv/hotel-vue:%NEW_VERSION%!"
        echo !newline!>> docker-compose.yml.tmp
    ) else (
        echo !line!>> docker-compose.yml.tmp
    )
)

:: 替换原文件
move /y docker-compose.yml.tmp docker-compose.yml

:: 执行docker-compose up -d
echo 正在启动新版本服务...
docker-compose up -d

:: 删除旧版本镜像
echo 正在删除旧版本镜像...
docker rmi zhongmingyv/hotel-server:!CURRENT_VERSION!
docker rmi zhongmingyv/hotel-lockcom:!CURRENT_VERSION!
docker rmi zhongmingyv/hotel-vue:!CURRENT_VERSION!

echo 更新完成!
